/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef JdroModel_h
#define JdroModel_h

@interface EventOut :NSObject

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 资源ID
@property (strong,nonatomic,nonnull)  NSString*  physicalId;

/// 资源运行操作
@property (strong,nonatomic,nonnull)  NSString*  resourceAction;

/// 资源名称
@property (strong,nonatomic,nonnull)  NSString*  resourceName;

/// 资源运行状态
@property (strong,nonatomic,nonnull)  NSString*  resourceStatus;

/// 资源运行状态原因
@property (strong,nonatomic,nonnull)  NSString*  resourceStatusReason;

/// 资源类型
@property (strong,nonatomic,nonnull)  NSString*  resourceType;

/// 资源栈ID
@property (strong,nonatomic,nonnull)  NSString*  stackId;

/// 唯一标识
@property (strong,nonatomic,nonnull)  NSString*  uuid;


-(id) initWithCreateTime:(NSString*) createTime
    physicalId:(NSString*)physicalId
    resourceAction:(NSString*)resourceAction
    resourceName:(NSString*)resourceName
    resourceStatus:(NSString*)resourceStatus
    resourceStatusReason:(NSString*)resourceStatusReason
    resourceType:(NSString*)resourceType
    stackId:(NSString*)stackId
    uuid:(NSString*)uuid;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TemplateOut :NSObject

/// 模板创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 模板描述
@property (strong,nonatomic,nonnull)  NSString*  describe;

/// 模板ID
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// 模板内容
@property (strong,nonatomic,nonnull)  NSString*  info;

/// 模板名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 地域信息
@property (strong,nonatomic,nonnull)  NSString*  region;


-(id) initWithCreateTime:(NSString*) createTime
    describe:(NSString*)describe
    idValue:(NSString*)idValue
    info:(NSString*)info
    name:(NSString*)name
    region:(NSString*)region;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceTargetDefinition :NSObject

/// Attribute
@property (strong,nonatomic,nonnull)  NSString*  attribute;

/// 如果 Attribute 为 Properties，值为属性的名称，否则为空
@property (strong,nonatomic,nonnull)  NSString*  name;

/// RequiresRecreation
@property (strong,nonatomic,nonnull)  NSString*  requiresRecreation;


-(id) initWithAttribute:(NSString*) attribute
    name:(NSString*)name
    requiresRecreation:(NSString*)requiresRecreation;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DescribeResourceTypeListItem :NSObject

/// Describe
@property (strong,nonatomic,nonnull)  NSString*  describe;

/// 资源类型
@property (strong,nonatomic,nonnull)  NSString*  type;


-(id) initWithDescribe:(NSString*) describe
    type:(NSString*)type;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PropertyItemType :NSObject

/// MultiValues
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  multiValues;

/// Scalar
@property (strong,nonatomic,nonnull)  NSString*  scalar;


-(id) initWithMultiValues:(NSArray<NSString*>*) multiValues
    scalar:(NSString*)scalar;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Environment :NSObject

/// 禁止回滚，默认false，即创建资源栈失败时回滚
@property (strong,nonatomic,nonnull)  NSNumber*  disableRollback;

/// 资源栈名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 自定义参数值map, 内容为键值对形式，key为参数，value为自定义参数值。Params中的参数值会覆盖模板文件中参数的默认值。
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  params;

/// 超时时间，单位分钟，范围10-180
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;


-(id) initWithDisableRollback:(NSNumber*) disableRollback
    name:(NSString*)name
    params:(NSMutableDictionary<NSString*,NSString*>*)params
    timeout:(NSNumber*)timeout;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Err :NSObject

/// Code
@property (strong,nonatomic,nonnull)  NSNumber*  code;

/// Details
@property (strong,nonatomic,nonnull)  NSObject*  details;

/// Message
@property (strong,nonatomic,nonnull)  NSString*  message;

/// Status
@property (strong,nonatomic,nonnull)  NSString*  status;


-(id) initWithCode:(NSNumber*) code
    details:(NSObject*)details
    message:(NSString*)message
    status:(NSString*)status;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceOut :NSObject

/// 资源运行操作
@property (strong,nonatomic,nonnull)  NSString*  action;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 删除策略
@property (strong,nonatomic,nonnull)  NSString*  deletePolicy;

/// 删除时间
@property (strong,nonatomic,nonnull)  NSString*  deleteTime;

/// 资源逻辑ID
@property (strong,nonatomic,nonnull)  NSString*  logicId;

/// 资源ID
@property (strong,nonatomic,nonnull)  NSString*  physicalId;

/// 地域信息
@property (strong,nonatomic,nonnull)  NSString*  region;

/// Snapshot信息，仅针对磁盘资源类型
@property (strong,nonatomic,nonnull)  NSString*  snapshot;

/// 资源栈ID
@property (strong,nonatomic,nonnull)  NSString*  stackId;

/// 资源运行状态
@property (strong,nonatomic,nonnull)  NSString*  status;

/// 资源运行状态原因
@property (strong,nonatomic,nonnull)  NSString*  statusReason;

/// 资源类型
@property (strong,nonatomic,nonnull)  NSString*  type;

/// 更新时间
@property (strong,nonatomic,nonnull)  NSString*  updateTime;


-(id) initWithAction:(NSString*) action
    createTime:(NSString*)createTime
    deletePolicy:(NSString*)deletePolicy
    deleteTime:(NSString*)deleteTime
    logicId:(NSString*)logicId
    physicalId:(NSString*)physicalId
    region:(NSString*)region
    snapshot:(NSString*)snapshot
    stackId:(NSString*)stackId
    status:(NSString*)status
    statusReason:(NSString*)statusReason
    type:(NSString*)type
    updateTime:(NSString*)updateTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface StackOut :NSObject

/// 资源栈运行操作
@property (strong,nonatomic,nonnull)  NSString*  action;

/// 资源栈能否更新
@property (strong,nonatomic,nonnull)  NSNumber*  canUpdate;

/// 资源栈创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 资源栈是否回滚设置
@property (strong,nonatomic,nonnull)  NSNumber*  disableRollback;

/// 资源栈ID
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// 资源栈输入信息，JSON格式，此字段只在查询资源栈详情describeStack时有值
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSObject*>*  input;

/// 资源栈名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 资源栈输出信息，JSON格式, 此字段只在查询资源栈详情describeStack时有值
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSObject*>*  output;

/// 资源栈所在区域
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 资源栈版本
@property (strong,nonatomic,nonnull)  NSNumber*  stackVersion;

/// 资源栈运行状态
@property (strong,nonatomic,nonnull)  NSString*  status;

/// 资源栈运行状态原因
@property (strong,nonatomic,nonnull)  NSString*  statusReason;

/// 资源栈使用的template ID
@property (strong,nonatomic,nonnull)  NSString*  templateId;

/// 资源栈超时时间
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;

/// 资源栈更新时间
@property (strong,nonatomic,nonnull)  NSString*  updateTime;


-(id) initWithAction:(NSString*) action
    canUpdate:(NSNumber*)canUpdate
    createTime:(NSString*)createTime
    disableRollback:(NSNumber*)disableRollback
    idValue:(NSString*)idValue
    input:(NSMutableDictionary<NSString*,NSObject*>*)input
    name:(NSString*)name
    output:(NSMutableDictionary<NSString*,NSObject*>*)output
    region:(NSString*)region
    stackVersion:(NSNumber*)stackVersion
    status:(NSString*)status
    statusReason:(NSString*)statusReason
    templateId:(NSString*)templateId
    timeout:(NSNumber*)timeout
    updateTime:(NSString*)updateTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceChangeDetail :NSObject

/// 引发变更的资源逻辑id，当 changeSource 为 DirectModification ，此值为空
@property (strong,nonatomic,nonnull)  NSString*  causingEntity;

/// ChangeSource
@property (strong,nonatomic,nonnull)  NSString*  changeSource;

/// Evaluation
@property (strong,nonatomic,nonnull)  NSString*  evaluation;

/// Target
@property (strong,nonatomic,nonnull)  ResourceTargetDefinition*  target;


-(id) initWithCausingEntity:(NSString*) causingEntity
    changeSource:(NSString*)changeSource
    evaluation:(NSString*)evaluation
    target:(ResourceTargetDefinition*)target;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TemplateValidateSpec :NSObject

/// Environment
@property (strong,nonatomic,nonnull)  Environment*  environment;

/// 模板
@property (strong,nonatomic,nonnull)  NSObject*  template;

/// 可取值:(validateTemplate (检测模板), validateStack (检测模板和environment)) 默认validateTemplate
@property (strong,nonatomic,nonnull)  NSString*  validateMode;


-(id) initWithEnvironment:(Environment*) environment
    template:(NSObject*)template
    validateMode:(NSString*)validateMode;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceChange :NSObject

/// Action
@property (strong,nonatomic,nonnull)  NSString*  action;

/// 更新操作中将对资源做的改变详情
@property (strong,nonatomic,nonnull)  NSArray<ResourceChangeDetail*>*  details;

/// 资源在模板中的逻辑id
@property (strong,nonatomic,nonnull)  NSString*  logicalResourceId;

/// 资源物理id
@property (strong,nonatomic,nonnull)  NSString*  physicalResourceId;

/// Replacement
@property (strong,nonatomic,nonnull)  NSString*  replacement;

/// 资源类型
@property (strong,nonatomic,nonnull)  NSString*  resourceType;

/// 更新操作中修改发生的位置
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  scope;


-(id) initWithAction:(NSString*) action
    details:(NSArray<ResourceChangeDetail*>*)details
    logicalResourceId:(NSString*)logicalResourceId
    physicalResourceId:(NSString*)physicalResourceId
    replacement:(NSString*)replacement
    resourceType:(NSString*)resourceType
    scope:(NSArray<NSString*>*)scope;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PropertyTypeDefinition :NSObject

/// 注释
@property (strong,nonatomic,nonnull)  NSString*  comment;

/// 说明文档地址
@property (strong,nonatomic,nonnull)  NSString*  documentation;

/// 如果 Type 字段的值为 List，则指示 CloudFormation 是否允许重复值。true将忽略重复值，false将对重复值报错
@property (strong,nonatomic,nonnull)  NSNumber*  duplicatesAllowed;

/// 如果 Type 字段的值为 List 或 Map，则指示列表或映射的类型 (如果它们包含非基元类型)
@property (strong,nonatomic,nonnull)  NSString*  itemType;

/// 如果 Type 字段的值为 List 或 Map，则指示列表或映射的类型 (如果它们包含基元类型)
@property (strong,nonatomic,nonnull)  NSString*  primitiveItemType;

/// 基元类型
@property (strong,nonatomic,nonnull)  NSString*  primitiveType;

/// 是否必填
@property (strong,nonatomic,nonnull)  NSNumber*  required;

/// Type
@property (strong,nonatomic,nonnull)  PropertyItemType*  type;

/// 更新行为类别
@property (strong,nonatomic,nonnull)  NSString*  updateType;


-(id) initWithComment:(NSString*) comment
    documentation:(NSString*)documentation
    duplicatesAllowed:(NSNumber*)duplicatesAllowed
    itemType:(NSString*)itemType
    primitiveItemType:(NSString*)primitiveItemType
    primitiveType:(NSString*)primitiveType
    required:(NSNumber*)required
    type:(PropertyItemType*)type
    updateType:(NSString*)updateType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceAttribute :NSObject

/// 注释
@property (strong,nonatomic,nonnull)  NSString*  comment;

/// 如果 Type 字段的值为 List 或 Map，则指示列表或映射的类型 (如果它们包含非基元类型)
@property (strong,nonatomic,nonnull)  NSString*  itemType;

/// 如果 Type 字段的值为 List 或 Map，则指示列表或映射的类型 (如果它们包含基元类型)
@property (strong,nonatomic,nonnull)  NSString*  primitiveItemType;

/// 基元类型
@property (strong,nonatomic,nonnull)  NSString*  primitiveType;

/// Type
@property (strong,nonatomic,nonnull)  PropertyItemType*  type;


-(id) initWithComment:(NSString*) comment
    itemType:(NSString*)itemType
    primitiveItemType:(NSString*)primitiveItemType
    primitiveType:(NSString*)primitiveType
    type:(PropertyItemType*)type;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceTypes :NSObject

/// 资源输出参数定义
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,ResourceAttribute*>*  attributes;

/// 资源描述
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 文档链接
@property (strong,nonatomic,nonnull)  NSString*  documentation;

/// 资源属性定义
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,PropertyTypeDefinition*>*  properties;


-(id) initWithAttributes:(NSMutableDictionary<NSString*,ResourceAttribute*>*) attributes
    descriptionValue:(NSString*)descriptionValue
    documentation:(NSString*)documentation
    properties:(NSMutableDictionary<NSString*,PropertyTypeDefinition*>*)properties;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Change :NSObject

/// ResourceChange
@property (strong,nonatomic,nonnull)  ResourceChange*  resourceChange;

/// Type
@property (strong,nonatomic,nonnull)  NSString*  type;


-(id) initWithResourceChange:(ResourceChange*) resourceChange
    type:(NSString*)type;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PropertyTypes :NSObject

/// Documentation
@property (strong,nonatomic,nonnull)  NSString*  documentation;

/// Properties
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,PropertyTypeDefinition*>*  properties;


-(id) initWithDocumentation:(NSString*) documentation
    properties:(NSMutableDictionary<NSString*,PropertyTypeDefinition*>*)properties;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateStackSpec :NSObject

/// Environment
@property (strong,nonatomic,nonnull)  Environment*  environment;

/// 模板, JSON对象
@property (strong,nonatomic,nonnull)  NSObject*  template;


-(id) initWithEnvironment:(Environment*) environment
    template:(NSObject*)template;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateStackChangeSetRequset :NSObject

/// Environment
@property (strong,nonatomic,nonnull)  Environment*  environment;

/// 模板, JSON对象
@property (strong,nonatomic,nonnull)  NSObject*  template;


-(id) initWithEnvironment:(Environment*) environment
    template:(NSObject*)template;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ChangeSet :NSObject

/// 更改集操作
@property (strong,nonatomic,nonnull)  NSString*  action;

/// 更改信息
@property (strong,nonatomic,nonnull)  NSString*  changeInfo;

/// changeset的详细信息
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,Change*>*  changeMap;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 更改集描述
@property (strong,nonatomic,nonnull)  NSString*  describe;

/// Id
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// 是否执行
@property (strong,nonatomic,nonnull)  NSNumber*  isRun;

/// 更改集名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 地域信息
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 执行时间
@property (strong,nonatomic,nonnull)  NSString*  runTime;

/// 对应资源栈ID
@property (strong,nonatomic,nonnull)  NSString*  stackId;

/// 状态
@property (strong,nonatomic,nonnull)  NSString*  status;

/// 状态原因
@property (strong,nonatomic,nonnull)  NSString*  statusReason;

/// 对应模板ID
@property (strong,nonatomic,nonnull)  NSString*  templateId;


-(id) initWithAction:(NSString*) action
    changeInfo:(NSString*)changeInfo
    changeMap:(NSMutableDictionary<NSString*,Change*>*)changeMap
    createTime:(NSString*)createTime
    describe:(NSString*)describe
    idValue:(NSString*)idValue
    isRun:(NSNumber*)isRun
    name:(NSString*)name
    region:(NSString*)region
    runTime:(NSString*)runTime
    stackId:(NSString*)stackId
    status:(NSString*)status
    statusReason:(NSString*)statusReason
    templateId:(NSString*)templateId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* JdroModel_h */
